unsafe_input = ActionController::Base.helpers.escape_javascript("'hi'") # comes from user input html = "<script>console.log('((url))');</script>" html.gsub("((url))", unsafe_input) salida: "<script>console.log('');</script>hi');</script>');</script>"
esperado: <script>console.log('\'hi\'');</script>
Estoy tratando de crear HTML dinámico para inyectar en la página. Este html es una combinación de mi propio html (seguro), y cualquier código no seguro (en el ejemplo anterior, unsafe_input ) se ejecuta a través escape_javascript y se inserta SOLO entre comillas simples en una variable de javascript.
No uso escape_javascript en la vista porque construir el html es bastante complicado y no quiero hacerlo todo dentro de la vista... Lo hago en un modelo usando el ayudante, y en el html simplemente tengo:
<%= @combined_html.html_safe %>